using System;
using System.Collections;
using System.Collections.Specialized;
using System.Runtime.InteropServices;
namespace BMC.ARSystem
{
	[ARStructTypeInfo(Name = "ARFieldInfoStruct", NumberOfMembers = 14u), ClassInterface, Guid("eb09548d-afec-4aed-9dc1-2228152ab24b"), ProgId("BMC.ARSystem.Vui")]
	public class Vui
	{
		[Guid("f624fdf6-fa56-41bd-8048-580f1e646449")]
		public enum MemberFlags
		{
			FormName = 1,
			Id,
			Name = 4,
			Locale = 8,
			Type = 16,
			Properties = 32,
			Helptext = 64,
			Owner = 128,
			ChangeDiary = 256,
			LastUpdateTime = 512,
			LastModifiedBy = 1024,
			AssignedName = 2048,
			ObjProperties = 4096,
			NONE = 0,
			ALL = 4095
		}
		private string _formName;
		[ARStructMemTypeInfo(Name = "vuiId", Offset = 1u)]
		private uint _vuiId;
		[ARStructMemTypeInfo(Name = "vuiName", Offset = 2u)]
		private string _vuiName;
		[ARStructMemTypeInfo(Name = "locale", Offset = 3u)]
		private string _locale;
		[ARStructMemTypeInfo(Name = "vuiType", Offset = 5u)]
		private uint _vuiType;
		[ARStructMemTypeInfo(Name = "dispPropList", Offset = 6u)]
		private IDictionary _propList;
		[ARStructMemTypeInfo(Name = "helpText", Offset = 7u)]
		private string _helpText;
		[ARStructMemTypeInfo(Name = "timestamp", Offset = 8u)]
		private DateTime _timestamp;
		[ARStructMemTypeInfo(Name = "owner", Offset = 9u)]
		private string _owner;
		[ARStructMemTypeInfo(Name = "lastChanged", Offset = 10u)]
		private string _lastChanged;
		[ARStructMemTypeInfo(Name = "changeDiary", Offset = 11u)]
		private DiaryList _changeDiary;
		[ARStructMemTypeInfo(Name = "assgnName", Offset = 12u)]
		private string _assgnName;
		[ARStructMemTypeInfo(Name = "objPropList", Offset = 13u)]
		private IDictionary _objPropList;
		private BitVector32 _modifyFlags;
		public string FormName
		{
			get
			{
				return this._formName;
			}
			set
			{
				this._formName = value;
			}
		}
		public uint Id
		{
			get
			{
				return this._vuiId;
			}
			set
			{
				this._vuiId = value;
			}
		}
		public uint VuiId
		{
			get
			{
				return this.Id;
			}
			set
			{
				this.Id = value;
			}
		}
		public string Name
		{
			get
			{
				return this._vuiName;
			}
			set
			{
				this._vuiName = value;
			}
		}
		public string Locale
		{
			get
			{
				return this._locale;
			}
			set
			{
				this._locale = value;
			}
		}
		public uint VuiType
		{
			get
			{
				return this._vuiType;
			}
			set
			{
				this._vuiType = value;
			}
		}
		public IDictionary Properties
		{
			get
			{
				this._modifyFlags = new BitVector32(this._modifyFlags.get_Data() | 32);
				return this._propList;
			}
			set
			{
				this._modifyFlags = new BitVector32(this._modifyFlags.get_Data() | 32);
				this._propList = value;
			}
		}
		public string HelpText
		{
			get
			{
				return this._helpText;
			}
			set
			{
				this._helpText = value;
			}
		}
		public DateTime LastUpdateTime
		{
			get
			{
				return this._timestamp;
			}
			set
			{
				this._timestamp = value;
			}
		}
		public string Owner
		{
			get
			{
				return this._owner;
			}
			set
			{
				this._owner = value;
			}
		}
		public string LastModifiedBy
		{
			get
			{
				return this._lastChanged;
			}
			set
			{
				this._lastChanged = value;
			}
		}
		public DiaryList ChangeDiary
		{
			get
			{
				return this._changeDiary;
			}
			set
			{
				this._changeDiary = value;
			}
		}
		public string Label
		{
			get
			{
				if (this.Properties != null && this.Properties.Contains(20))
				{
					return this.Properties.get_Item(20).ToString();
				}
				return "";
			}
			set
			{
				if (this.Properties == null)
				{
					this.Properties = new HybridDictionary();
				}
				this.Properties.set_Item(20, value);
			}
		}
		public string AssignedName
		{
			get
			{
				return this._assgnName;
			}
			set
			{
				if (this._assgnName == value)
				{
					return;
				}
				this._modifyFlags = new BitVector32(this._modifyFlags.get_Data() | 2048);
				this._assgnName = value;
			}
		}
		public IDictionary ObjProperties
		{
			get
			{
				this._modifyFlags = new BitVector32(this._modifyFlags.get_Data() | 4096);
				return this._objPropList;
			}
			set
			{
				this._modifyFlags = new BitVector32(this._modifyFlags.get_Data() | 4096);
				this._objPropList = value;
			}
		}
		[ComVisible(false)]
		public BitVector32 MembersModified
		{
			get
			{
				return this._modifyFlags;
			}
			set
			{
				this._modifyFlags = value;
			}
		}
		public int MembersModifiedAsInt
		{
			get
			{
				return this._modifyFlags.get_Data();
			}
			set
			{
				this._modifyFlags = new BitVector32(value);
			}
		}
		public Vui()
		{
			this._modifyFlags = new BitVector32(0);
		}
		internal Vui(object[] rawData, Server server)
		{
			this.FormName = (string)Util.GetAt(rawData, new int[]
			{
				3
			});
			this.Id = Convert.ToUInt32(Util.GetAt(rawData, new int[]
			{
				4
			}));
			this.Name = (string)Util.GetAt(rawData, new int[]
			{
				5
			});
			this.Locale = (string)Util.GetAt(rawData, new int[]
			{
				6
			});
			this.VuiType = Convert.ToUInt32(Util.GetAt(rawData, new int[]
			{
				7
			}));
			ARTypeMgr arg_DD_0 = ARTypeMgr.Instance;
			Type arg_DD_1 = typeof(HybridDictionary);
			string arg_DD_2 = "System.Int32";
			int[] keyIndex = new int[1];
			this.Properties = arg_DD_0.BuildCustomDictionaryFromVariant(arg_DD_1, arg_DD_2, keyIndex, "ARValue", new int[]
			{
				1
			}, (object[])Util.GetAt(rawData, new int[]
			{
				8
			}), server);
			this.HelpText = (string)Util.GetAt(rawData, new int[]
			{
				9
			});
			this.LastUpdateTime = Util.GetDateTime(Convert.ToUInt32(Util.GetAt(rawData, new int[]
			{
				10
			})));
			this.Owner = (string)Util.GetAt(rawData, new int[]
			{
				11
			});
			this.LastModifiedBy = (string)Util.GetAt(rawData, new int[]
			{
				12
			});
			this.ChangeDiary = DiaryList.Decode((string)Util.GetAt(rawData, new int[]
			{
				13
			}));
			ARTypeMgr arg_1CE_0 = ARTypeMgr.Instance;
			Type arg_1CE_1 = typeof(HybridDictionary);
			string arg_1CE_2 = "System.Int32";
			keyIndex = new int[1];
			this.ObjProperties = arg_1CE_0.BuildCustomDictionaryFromVariant(arg_1CE_1, arg_1CE_2, keyIndex, "ARValue", new int[]
			{
				1
			}, (object[])Util.GetAt(rawData, new int[]
			{
				14
			}), server);
			this._modifyFlags = new BitVector32(3);
		}
		internal static Vui createInstance(object[] rawData, Server server)
		{
			return new Vui(rawData, server);
		}
	}
}
